package com.queue;

/**
 * @program: letcode
 * @author: lin
 * @create: 2020-03-17 17:45
 * @description: 使用数组实现队列
 *
 * 队列特性：先进先出 、 后进后出 ，所以队列的尾部是用来添加数据，首部是进行数据的删除
 */
public class ArrayQueue {

    private String[] items;

    private int n = 0;

    private int head = 0;

    private int tail = 0;

    // 初始化队列
    public ArrayQueue(int capacity){
        items = new String[capacity];
        n = capacity;
    }

    //入队
    public boolean enqueue(String item){
        // 如果队列的尾部下标和数组的容量相等
        if(tail == n){
            return false;
        }
        items[tail] = item;
        ++tail;
        return true;
    }

    // 出队
    public String dequeue(){
        if(head == tail){
            return null;
        }
        String ret = items[head];
        ++head;
        return ret;
    }

    public void printAll() {
        for (int i = head; i < tail; ++i) {
            System.out.print(items[i] + " ");
        }
        System.out.println();
    }


}
